Bloodline
Proper inheritance in JavaScript
Install via npm
$ npm install --save bloodline
Usage
var inherit = require( 'bloodline' )
inherit( Constructor, SuperConstructor )
Notes
ES6 / ES2015 / ESNext
ES6 classes cannot be subclassed by ES5 classes (ES5 classes cannot inherit from ES6 classes);
there will be a TypeError: Class constructor SuperConstructor cannot be invoked without 'new'
.
This is not a limitation of this module, but of the ECMAScript specification.
The other way around also has issues; ES6 classes don't preserve the prototype chain
when extending ES5 classes (for an example, see https://gist.github.com/jhermsmeier/e6fb16fab193c0aa4220c98de64fe546).
So much for backwards compatibility.
util.inherits
Usage of Node core's of util.inherits()
is discouraged (see nodejs.org/api/util#util_inherits), because of its semantic incompatibility.
NOTE: This module does not exhibit these semantic incompatibilities.